package com.org.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;


public class JwtUtil {

    /**
     * 生成jwt
     * 使用Hs256算法
     */
    public  static String createJWT(String secretKey, long ttlMillis, Map<String, Object> claims) {
        //指定签名的时候使用的签名算法，也是header那部分
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;

        //生成JWT时间
        long nowMillis = System.currentTimeMillis()+ttlMillis;
        Date now = new Date(nowMillis);
        //设置jwt的boby
        JwtBuilder builder = Jwts.builder()
                .setClaims(claims)
                // 设置签名使用的签名算法和签名使用的秘钥
                   .signWith(signatureAlgorithm,secretKey.getBytes(StandardCharsets.UTF_8))
                      //设置过期时间
                      .setExpiration(now);
        return builder.compact();
    }

    public  static Claims parseJWT(String secretKey,String token) {
        Claims claims = Jwts.parser()
                //设置秘钥签名
                .setSigningKey(secretKey)
                //设置需要解析的jwt
                .parseClaimsJws(token).getBody();
        return  claims;
    }
}
